package cc.cc4414.cc03.sys.service;

import java.io.OutputStream;

import org.springframework.security.core.Authentication;

import com.baomidou.mybatisplus.extension.service.IService;

import cc.cc4414.cc03.sys.entity.User;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author cc
 * @since 2018-12-30
 */
public interface IUserService extends IService<User> {
	/**
	 * 获取当前登录用户信息
	 * 
	 * @return 当前用户
	 */
	User getUser();

	/**
	 * 通过用户名或者手机号查用户
	 * 
	 * @param username 用户名或者手机号
	 * @return 用户
	 */
	User getOneByUsername(String username);

	/**
	 * 查询用户名被尝试登录的次数
	 * 
	 * @param username 用户名或手机号
	 * @return 尝试登录的次数
	 */
	Integer getLoginNumber(String username);

	/**
	 * 生成图形验证码并保存至redis
	 * 
	 * @param visitorId 访客id
	 * @param out
	 */
	void createCaptcha(String visitorId, OutputStream out);

	/**
	 * 移除用户的token(AccessToken以及RefreshToken)
	 * 
	 * @param authentication 通过authentication查找对应的token
	 */
	void removeToken(Authentication authentication);

}
